home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_01 / allison / view.c < prev   
Encoding:
C/C++ Source or Header  |  1994-11-02  |  1.6 KB  |  64 lines

  1. LISTING 6 - Outline of a file viewing program that illustrates file positioning
  2.  
  3. /* view.c:  A simple 4-way-scrolling file browser */
  4.  
  5. /* cls(), display(), read_a_screen() omitted... */
  6.  
  7. main(int argc, char *argv[])
  8. {
  9.     fpos_t top_pos, stk_[MAXSTACK];
  10.     /* Details omitted... */
  11.  
  12. top:
  13.     /* Display initial screen */
  14.     rewind(f);
  15.     fgetpos(f,&top_pos);
  16.     /* Details omitted... */
  17.  
  18.     for (;;)
  19.     {
  20.         switch(c = toupper(getchar()))
  21.         {
  22.             case 'D':   /* Display the next screen */
  23.                 if (!feof(f))
  24.                 {
  25.                     PUSH(top_pos);
  26.                     fgetpos(f,&top_pos);
  27.                     read_a_screen(f);
  28.                     display(file);
  29.                 }
  30.                 break;
  31.  
  32.             case 'U':   /* Display the previous screen */
  33.                 if (stkptr_ > 0)
  34.                 {
  35.                     top_pos = POP();
  36.                     fsetpos(f,&top_pos);
  37.                     read_a_screen(f);
  38.                     display(file);
  39.                 }
  40.                 break;
  41.  
  42.             case 'T':   /* Display first screen */
  43.                 stkptr_ = 0;
  44.                 goto top;
  45.  
  46.             case 'B':   /* Display last screen */
  47.                 while (!feof(f))
  48.                 {
  49.                     PUSH(top_pos);
  50.                     fgetpos(f,&top_pos);
  51.                     read_a_screen(f);
  52.                 }
  53.                 display(file);
  54.                 break;
  55.  
  56.             case 'Q':   /* Quit */
  57.                 cls();
  58.                 return EXIT_SUCCESS;
  59.         }
  60.         /* Details omitted... */
  61.     }
  62. }
  63.  
  64.